// @ts-ignore
import * as echarts from '../components/ec-canvas/echarts'

export const formatTime = (date: Date, format: string) => {
  const o: any = {
    "M+": date.getMonth() + 1, // 月份
    "d+": date.getDate(), // 日
    "h+": date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 小时
    "H+": date.getHours(), // 小时
    "m+": date.getMinutes(), // 分
    "s+": date.getSeconds(), // 秒
    "q+": Math.floor((date.getMonth() + 3) / 3), // 季度
    S: date.getMilliseconds(), // 毫秒
    a: date.getHours() < 12 ? "上午" : "下午", // 上午/下午
    A: date.getHours() < 12 ? "AM" : "PM", // AM/PM
  };

  if (/(y+)/.test(format)) {
    format = format.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  }
  for (let k in o) {
    if (new RegExp("(" + k + ")").test(format)) {
      format = format.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
      );
    }
  }
  return format;
}

// 初始化Echarts数据
export function initEcharts(optionsData: any, canvasComponent: any) {
  // 初始化图表
  canvasComponent.init((canvas: any, width: any, height: any) => {
    const myChart = echarts.init(canvas, null, {
      width: width,
      height: height
    });
    // 设定配置
    myChart.setOption(optionsData)
  })
}

// 字符串补0，前补0，str不为空
export function fixZeroStart(str: string, n: number) {
  return (Array(n).join('0') + str).slice(-n);
}

// 后补零（str不能为空，否则会少一位TT）
export function fixZeroEnd(str: string, n: number) {
  return (str + Array(n).join('0')).slice(0, n);
}

export function mySleep(milSec: number) {
  return new Promise(resolve => {
    setTimeout(resolve, milSec)
  })
}

export function validateNull(val: any) {
  if (typeof val === 'boolean') {
    return false;
  }
  if (typeof val === 'number') {
    return false;
  }
  if (val instanceof Array) {
    if (val.length === 0) return true;
  } else if (val instanceof Object) {
    if (JSON.stringify(val) === '{}') return true;
  } else {
    if (val === 'null' || val == null || val === 'undefined' || val === undefined || val === '') return true;
    return false;
  }
  return false;
}